﻿#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "Item.h"


namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

    void InitItems();			//初始化所有棋子位置
    void NewGame();			//新游戏

    bool FindItemAtPoint(QPoint pt,Item& item);					//给定一个棋盘上的点，查找是否存在棋子
    bool DeleteItemAtPoint(QPoint pt,bool& bDeleteSHUAI);		//bDeleteSHUAI：是否打掉的是“帅”或“将”
    void SetItemShow(Item item,bool bShow);						//设置棋子显隐
    bool MoveItem(Item item,QPoint ptMoveTo);					//走棋逻辑
    void ChangeItemPoint(QPoint ptItem,QPoint pt);				//改变棋子位置属性

    void DrawItem(QPainter& painter,Item item);					//绘制棋子

    //获取棋子能移动的区域
    void GetMoveArea(Item item,QVector<QPoint>& area);
    void GetMoveArea_JU(Item item,QVector<QPoint>& area);
    void GetMoveArea_MA(Item item,QVector<QPoint>& area);
    void GetMoveArea_XIANG(Item item,QVector<QPoint>& area);
    void GetMoveArea_SHI(Item item,QVector<QPoint>& area);
    void GetMoveArea_SHUAI(Item item,QVector<QPoint>& area);
    void GetMoveArea_PAO(Item item,QVector<QPoint>& area);
    void GetMoveArea_BING(Item item,QVector<QPoint>& area);
protected:
    void paintEvent(QPaintEvent *);
    void mousePressEvent(QMouseEvent *);
    void timerEvent(QTimerEvent *);

private:
    Ui::MainWindow *ui;

    int mItemWidth;
    int mItemHeight;
    QPixmap mItemImage;         //棋子图片

    QVector<Item> mItems;       //所有棋子
    Item mSelectedItem;
    bool mIsExistSelect;        //是否已存在选中的棋子
    bool mIsRedTurn;            //当前该红方下
};

#endif // MAINWINDOW_H
